

package modelos;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

// Patron abstract Factory

public class MOrden implements modeloAbstractFactory {

    private static String codigo;
    private static String nombre;
    private String status;
    private static float total;

    public MOrden (String codigo, String nombre, float total)
    {
    	super ();
    	this.codigo = codigo;
    	this.nombre = nombre;
    	this.total = total;
    	
    }
    
    private MConexion conexion;

    public MOrden(){
            super();
            conexion= new MConexion();
    }
//Implementa patron abstract factory
    public void registrar(){
        conexion.conectar();
        //boolean sw = false;
        String SQL="INSERT INTO Orden (codigo, nombre, total,status) VALUES('"+getCodigo()+"','"+getNombre()+"',"+getTotal()+",'A')";
        try {
            conexion.getConexion().createStatement().execute(SQL);
           // sw= true;
        } catch (SQLException ex) {
         //    sw= false;
        }
        conexion.desconectar();
        //return sw;
    }



    public void registrarProductos(ArrayList<String> codigos,ArrayList<Integer> cantidades){
        conexion.conectar();
        for (int i = 0; i < codigos.size(); i++) {
            try {
                conexion.getConexion().createStatement().execute("INSERT INTO ProductoXOrden (codigo_ord, codigo_pro,cantidad) VALUES('"+getCodigo()+"','"+codigos.get(i)+"',"+cantidades.get(i)+")");
            } catch (SQLException ex) {
                Logger.getLogger(MOrden.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        conexion.desconectar();
    }
    
    public Memento saveMemento()
    {
    	return new Memento (MOrden.getCodigo(), MOrden.getNombre(), MOrden.getTotal());
    }
    
    
    
    
    
    public static void restaurarMemento(Memento memento)
    {
    	memento.getSalvarEstado();
    	codigo = MOrden.getCodigo();
    	memento.getSalvarEstado();
    	nombre = MOrden.getNombre();
    	memento.getSalvarEstado();
        total = MOrden.getTotal();    	
    }

    public ArrayList<String []> listarProductos(){
        ArrayList<String []> v = new ArrayList<String []>();
        conexion.conectar();
        try {
            ResultSet rs= conexion.getConexion().createStatement().executeQuery("SELECT Producto.descripcion, ProductoXOrden.cantidad  FROM  Producto,ProductoXOrden,Orden WHERE Orden.status='A'  AND Producto.status='A' AND Producto.codigo=ProductoXOrden.codigo_pro AND Orden.codigo=ProductoXOrden.codigo_ord AND Orden.codigo='"+getCodigo()+"'");
            while (rs.next()){
                String [] s = new String [] {rs.getString(1), ""+rs.getFloat(2)};
                v.add(s);
            }
        } catch (SQLException ex) {
            Logger.getLogger(MProducto.class.getName()).log(Level.SEVERE, null, ex);
        }
        conexion.desconectar();
        return v;
  }



    public static String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public static String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public static float getTotal() {
        return total;
    }

    public void setTotal(float total) {
        this.total = total;
    }

    

    



}
